package com.fruit.pojo.logistics;

import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

/**
 * 系统快递发单信息
 *
 * @author joe
 * @version 2018.02.05 13:56
 */
@Data
public class SysLogistics {
    /*
	 * ############################################以下为必填参数######################
	 * ################################
	 */
    /**
     * 订单ID
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String orderid;
    /**
     * 寄件方公司名称
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jCompany;
    /**
     * 寄件方联系人
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jContact;
    /**
     * 寄件方联系电话
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jTel;
    /**
     * 寄件方国家
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jCountry;
    /**
     * 寄件方所在省份 字段填写要求：必须是标准的省名称称谓 如：广东省，如果是直辖市，请直接传北京、上海等
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jProvince;
    /**
     * 寄件方所在城市名称
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jCity;
    /**
     * 寄件方所在县/区，必须是标准的县/区称谓，示例：“福田区”。
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jCounty;
    /**
     * 寄件方详细地址，包括省市区，示例：“广东省深圳市福田区新洲十一街万基商务大厦10楼”
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String jAddress;
    /**
     * 寄方邮编，跨境件必填（中国大陆，港澳台互寄除外）。
     */
    private String jPostCode;
    /**
     * 到件方公司名称（个人填写个人姓名）
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dCompany;
    /**
     * 到件方联系人
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dContact;
    /**
     * 到件方联系电话
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dTel;
    /**
     * 到件方手机
     */
    private String dMobile;
    /**
     * 到方国家
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dCountry;
    /**
     * 到方所在省份，必须是标准的省名称称谓 如：广东省，如果是直辖市，请直接传北京、上海等。
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dProvince;
    /**
     * 到件方所在城市名称，必须是标准的城市称谓 如：深圳市，如果是直辖市，请直接传北京（或北京市）、上海（或上海市） 等。
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dCity;
    /**
     * 到件方所在县/区，必须是标准的县/区称谓，示例：“福田区”
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dCounty;
    /**
     * 到件方详细地址，不包含省市
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String dAddress;
    /**
     * 月结卡号
     */
    @NotNull(message = "不能为空")
    @Size(min = 1)
    private String custid;
    /**
     * 是否要求收件通知（是否通知快递小哥上门取件，固定点儿不用通知快递小哥会自己到仓库取件）：
     * <p>
     * 1：要求
     * <p>
     * 其它为不要求
     */
    private Byte isDocall = 1;
    /**
     * 温度范围类型，当express_type为12医药温控件时必填：
     * <p>
     * 1为冷藏
     * <p>
     * 3为冷冻
     */
    private Byte tempRange;
    /**
     * 付款方式：
     * <p>
     * 1、寄方付
     * <p>
     * 2、收方付
     * <p>
     * 3、第三方付
     */
    private Byte payMethod;
	/*
	 * ############################################以下为非必填参数#####################
	 * ###############################
	 */
    /**
     * 快件产品类别，详见附录《快件产品类别表》，只有在商务上与顺丰约定的类别方可使用。
     * <p>
     * 1是标准快递，2是顺丰特惠，默认1
     */
    private String expressType;
    /**
     * 包裹数，一个包裹对应一个运单号，如果是大于1个包裹，则返回则按照子母件的方式返回母运单号和子运单号。
     * <p>
     * 非必填
     */
    private Byte parcelQuantity = 1;
    /**
     * 订单货物总长，单位厘米，精确到小数点后3位，包含子母件。
     * <p>
     * 非必填
     */
    private BigDecimal cargoLength;
    /**
     * 订单货物总宽，单位厘米，精确到小数点后3位，包含子母件。
     * <p>
     * 非必填
     */
    private BigDecimal cargoWidth;
    /**
     * 订单货物总高，单位厘米，精确到小数点后3位，包含子母件。
     * <p>
     * 非必填
     */
    private BigDecimal cargoHeight;
    /**
     * 订单货物总体积，单位立方厘米，精确到小数点后3位，会用于计抛（是否计抛具体商务沟通中双方约定）。
     * <p>
     * 非必填
     */
    private BigDecimal volume;
    /**
     * 订单货物总重量，包含子母件，单位千克，精确到小数点后3位，如果提供此值，必须>0 。
     * <p>
     * 非必填
     */
    private BigDecimal cargoTotalWeight;
    /**
     * 要求上门取件开始时间，格式：YYYY-MM-DD HH24:MM:SS，示例：2012-7-30 09:30:00。
     * <p>
     * 非必填
     */
    private String sendstarttime;
    /**
     * 是否要求签回单号：
     * <p>
     * 1：要求 其它为不要求
     * <p>
     * 默认不要求
     * <p>
     * 非必填
     */
    private String needReturnTrackingNo = "1";
    /**
     * 顺丰签回单服务运单号
     * <p>
     * 非必填
     */
    private String returnTracking;
    /**
     * 系统原始订单号
     * <p>
     * 非必填
     */
    private String originalNumber;
    /**
     * 货物品牌
     * <p>
     * 非必填
     */
    private String brand;

    /**
     * 快件自取
     * <p>
     * 1表示客户同意快件自取；
     * <p>
     * 非1表示客户不同意快件自取
     * <p>
     * 默认不同意自取
     * <p>
     * 非必填
     */
    private Byte oneselfPickupFlg;
    /**
     * 业务模板编码，业务模板指顺丰系统针对客户业务需求配置的一套接口处理逻辑，一个接入编码可对应多个业务模板。
     */
    private String template;
	/*
	 * ############################################以下为跨境件参数#####################
	 * ###############################
	 */
    /**
     * 寄件方国家/城市代码
     * <p>
     * 跨境时必传
     */
    private String jShippercode;
    /**
     * 到件方代码，用于表示到方国家的城市。如果此国家整体是以代理商来提供服务的，则此字段可能需要传国家编码。具体商务 沟通中双方约定。
     * <p>
     * 跨境件需要
     */
    private String dDeliverycode;
    /**
     * 到件方邮编
     * <p>
     * 跨境必传
     */
    private String dPostCode;
    /**
     * 订单货物总声明价值，包含子母件，精确到小数点后3位。
     * <p>
     * 如果是跨境件，则必填。
     */
    private BigDecimal declaredValue;
    /**
     * 货物声明价值币别，支持以下值：
     * <p>
     * CNY: 人民币
     * <p>
     * HKD: 港币
     * <p>
     * USD: 美元
     * <p>
     * NTD: 新台币
     * <p>
     * RUB: 卢布
     * <p>
     * EUR: 欧元
     * <p>
     * MOP: 澳门元
     * <p>
     * SGD: 新元
     * <p>
     * JPY: 日元
     * <p>
     * KRW: 韩元
     * <p>
     * MYR: 马币
     * <p>
     * VND: 越南盾
     * <p>
     * THB: 泰铢
     * <p>
     * AUD: 澳大利亚元
     * <p>
     * MNT: 图格里克
     * <p>
     * 跨境件报关需要填写
     */
    private String declaredValueCurrency = "CNY";
    /**
     * 货物信息
     * <p>
     * 需要生成电子运单时必传
     */
    private SysCargo cargo;

}
